Mehrere PHP-Prozesse laufen lassen?

Mehrere PHP-Prozesse laufen lassen?

am 11.09.2006 15:24:16 von georg116

Ich habe eine Web-Applikation, bei der der User auf Wunsch ein PDF
erzeugen lassen kann. Da die Erstellung des PDF teilweise sehr komplex
und langwiereig ist (bis zu 3min.), wird die "Haupt-Applikation" dadurch
blockiert.

Gibt es eine Möglichkeit, das Skript, dass das PDF erzeugt, als neuen
PHP-Prozess o.Ä. laufen zu lassen, sodass der User in der Zwischenzeit
in der "Haupt-Applikation" weiterarbeiten kann?

Ich habe mir in der PHP-Doku schon die div. pcntl und proc Befehle
angesehen, aber nichts passendes gefunden (oder übersehen).

dank,georg.

Re: Mehrere PHP-Prozesse laufen lassen?

am 11.09.2006 15:56:27 von Jens Riedel

Georg Weiler wrote:
> Ich habe eine Web-Applikation, bei der der User auf Wunsch ein PDF
> erzeugen lassen kann. Da die Erstellung des PDF teilweise sehr komplex
> und langwiereig ist (bis zu 3min.), wird die "Haupt-Applikation" dadurch
> blockiert.
>
> Gibt es eine Möglichkeit, das Skript, dass das PDF erzeugt, als neuen
> PHP-Prozess o.Ä. laufen zu lassen, sodass der User in der Zwischenzeit
> in der "Haupt-Applikation" weiterarbeiten kann?

Du kannst das z.B. per AJAX machen. Der "PDF generieren"-Button erzeugt
dabei z.B. den asynchronen Aufruf deines PDF-Erzeugungs-Skripts, sobald
das durch ist, wird automatisch ein Download-Link eingeblendet.

Gruß,
Jens


--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach

Re: Mehrere PHP-Prozesse laufen lassen?

am 11.09.2006 15:57:21 von thornythegod

Georg Weiler schrieb:

> Ich habe eine Web-Applikation, bei der der User auf Wunsch ein PDF
> erzeugen lassen kann. Da die Erstellung des PDF teilweise sehr komplex
> und langwiereig ist (bis zu 3min.), wird die "Haupt-Applikation" dadurch
> blockiert.
>
> Gibt es eine Möglichkeit, das Skript, dass das PDF erzeugt, als neuen
> PHP-Prozess o.Ä. laufen zu lassen, sodass der User in der Zwischenzeit
> in der "Haupt-Applikation" weiterarbeiten kann?
>
> Ich habe mir in der PHP-Doku schon die div. pcntl und proc Befehle
> angesehen, aber nichts passendes gefunden (oder übersehen).

Die von dir angesprochenen Befehle bewirken auch nur das "forken" eines
Prozesses - paralleles Rechnen ist nicht möglich.

Mögliche Lösungen wären:
1. Das Auslagern der PDF-Erzeugung auf einen dedizierten Server, der
keine 3 Minuten dafür benötigt.
2. Das Erstellen des PDF's losgelöst vom Nutzer
3. Alle anderen, die mir gerade nicht einfallen ;)

Gruß,
Torsten

Re: Mehrere PHP-Prozesse laufen lassen?

am 11.09.2006 16:00:16 von Niels Braczek

Georg Weiler schrieb:

> Gibt es eine Möglichkeit, das Skript, dass das PDF erzeugt, als neuen=
=20
> PHP-Prozess o.Ä. laufen zu lassen, sodass der User in der Zwischenzei=
t=20
> in der "Haupt-Applikation" weiterarbeiten kann?

Starte das Skript indirekt über einen eigenen Request (zB. via
-Tag). Damit hast du das entkoppelt.

> Ich habe mir in der PHP-Doku schon die div. pcntl und proc Befehle=20
> angesehen, aber nichts passendes gefunden (oder übersehen).

Das wäre auch in den seltensten Fällen portabel, weil alle netten[tm]=

Funktionen meistens bei den Hostern abgeschaltet sind.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Mehrere PHP-Prozesse laufen lassen?

am 12.09.2006 11:39:45 von georg116

Niels Braczek wrote:
> Georg Weiler schrieb:
>
>> Gibt es eine Möglichkeit, das Skript, dass das PDF erzeugt, als neuen
>> PHP-Prozess o.Ä. laufen zu lassen, sodass der User in der Zwischenzeit
>> in der "Haupt-Applikation" weiterarbeiten kann?
>
> Starte das Skript indirekt über einen eigenen Request (zB. via
> -Tag). Damit hast du das entkoppelt.

Niels, das klingt interessant, blicke aber noch nicht 100%
durch...könntest du mir das vielleicht etwas näher erklären?
....vielleicht stehe ich ja auch einfach nur auf der Leitung.

dank,georg

Re: Mehrere PHP-Prozesse laufen lassen?

am 12.09.2006 13:50:06 von Niels Braczek

Georg Weiler schrieb:
> Niels Braczek wrote:
>> Georg Weiler schrieb:
>>=20
>>> Gibt es eine Möglichkeit, das Skript, dass das PDF erzeugt, als neu=
en=20
>>> PHP-Prozess o.Ä. laufen zu lassen, sodass der User in der Zwischenz=
eit=20
>>> in der "Haupt-Applikation" weiterarbeiten kann?
>>=20
>> Starte das Skript indirekt über einen eigenen Request (zB. via
>> -Tag). Damit hast du das entkoppelt.
>=20
> Niels, das klingt interessant, blicke aber noch nicht 100%=20
> durch...könntest du mir das vielleicht etwas näher erklären?=20
> ...vielleicht stehe ich ja auch einfach nur auf der Leitung.

Im Hauptskript gibst du ein



aus. In forked_skript.php kannst du nun alles tun, solange du willst
(und der Server dich lässt). Am Schluss lieferst du noch ein Bild aus,
wenn du nett bist und IE-User das hässliche Kästchen ersparen willst.=


MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Mehrere PHP-Prozesse laufen lassen?

am 12.09.2006 13:56:32 von Jens Riedel

Niels Braczek wrote:

> Am Schluss lieferst du noch ein Bild aus,
> wenn du nett bist und IE-User das hässliche Kästchen ersparen willst.

3 Minuten Platzhalter ist auch nicht schön... ;-)

Gruß,
Jens


--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach